## /****************************************/
## /*******  模拟从雅虎金融获取股票数据   *******/
## /****************************************/
import pandas_datareader as pdr
import yfinance as yf
import akshare as ak
import numpy as np
import matplotlib.pyplot as plt

# pdr.get_data_fred('GS10')

# 设置代理
proxy = {
    'http': 'http://79.127.158.225:8081', # Japan
    'https': 'https://47.243.113.74:5555' # Hong Kong
}

start_date = '2025-03-01'
end_date = '2025-03-20'

# 中國平安 (601318.SS)
ticker = '601318.SS'
# 自 2021 年 11 月 1 日起，Yahoo 的服务在中国大陆地区被限制访问
# data = pdr.data.DataReader('601318.SS','yahoo',start_date,end_date) # Yahoo Finance 的限制无法绕过
#data = yf.download('601318.SS', start_date, end_date) # Yahoo Finance 的限制无法绕过
#data = yf.download(ticker, start_date, end_date, proxy) # Yahoo Finance 的限制无法绕过
#data = yf.download(tickers=ticker, start=start_date, end=end_date, proxy=proxy) # Yahoo Finance 的限制无法绕过
data = ak.stock_zh_a_hist(symbol="601318", start_date="20250301", end_date="20250321")

# 查看数据
print(data.head())

#创建交易信号字段，命名为“标记”
#如果涨跌额值大于0，则“标记”为1，否则为0
data['标记'] = np.where(data['涨跌额'] > 0, 1, 0)
#检查是否成功
print(data.head())

# 设置画布的尺寸 10*5
plt.figure(figsize = (10,5))
# 使用折线图绘制出每天的收盘价
data['收盘'].plot(linewidth=2, color='k',grid=True)
# 如果当天股价上涨，标出卖出信号，用倒三角标识
plt.scatter(data['收盘'].loc[data['标记']==1].index,data['收盘'][data['标记']==1],marker='v',s=80,c='g')
# 如果当天股价下跌给出买入信号，用整三角标识
plt.scatter(data['收盘'].loc[data['标记']==0].index,data['收盘'][data['标记']==0],marker='^',s=80,c='r')
# 将图像进行展示
plt.show()